package fr.umlv.m2.uwp2011.persistence.matiere.dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import fr.umlv.m2.uwp2011.persistence.matiere.Cursus;
import fr.umlv.m2.uwp2011.persistence.matiere.ICursusDAO;
import fr.umlv.m2.uwp2011.persistence.matiere.TroncCommun;

public class HibernateCursusDAO implements ICursusDAO {
	private static final Map<Long, Cursus> allCursus = new HashMap<Long, Cursus>();
	private static final HibernateTroncCommunDAO troncCommunDAO = new HibernateTroncCommunDAO();
	static {
		Cursus cursus;
		cursus =new Cursus();
		cursus.setId(1L);
		cursus.setLibelle("master 2 info");
		List<TroncCommun> troncsCommuns = new ArrayList<TroncCommun>();
		troncsCommuns.add(troncCommunDAO.findById(1L));
		troncsCommuns.add(troncCommunDAO.findById(2L));
		troncsCommuns.add(troncCommunDAO.findById(3L));
		cursus.setListTroncCommun(troncsCommuns);
		allCursus.put(cursus.getId(), cursus);

		Cursus cursus2;
		cursus2 =new Cursus();
		cursus2.setId(2L);
		cursus2.setLibelle("master 1 info");
		List<TroncCommun> troncsCommuns2 = new ArrayList<TroncCommun>();
		troncsCommuns2.add(troncCommunDAO.findById(4L));
		troncsCommuns2.add(troncCommunDAO.findById(5L));
		troncsCommuns2.add(troncCommunDAO.findById(6L));
		cursus2.setListTroncCommun(troncsCommuns2);
		allCursus.put(cursus2.getId(), cursus2);

		Cursus cursus3;
		cursus3 =new Cursus();
		cursus3.setId(3L);
		cursus3.setLibelle("master 1 math");
		List<TroncCommun> troncsCommuns3 = new ArrayList<TroncCommun>();
		troncsCommuns3.add(troncCommunDAO.findById(6L));
		troncsCommuns3.add(troncCommunDAO.findById(7L));
		cursus3.setListTroncCommun(troncsCommuns3);
		allCursus.put(cursus3.getId(), cursus3);
	}

	@Override
	public List<Cursus> findByUserID(String user_id) {
		List<Cursus> listCursus = new ArrayList<Cursus>();
		if(user_id.equals("prof1")) {			
			listCursus.add(findById(1L));
			listCursus.add(findById(2L));
			listCursus.add(findById(3L));
			return listCursus;
		}
		else if(user_id.equals("prof2")) {			
			listCursus.add(findById(1L));
			return listCursus;
		}
		else if(user_id.equals("prof3")) {			
			listCursus.add(findById(2L));
			listCursus.add(findById(3L));
			return listCursus;
		}
		else if(user_id.equals("prof4")) {			
			listCursus.add(findById(3L));
			return listCursus;
		}
		else if(user_id.equals("etud1")) {			
			listCursus.add(findById(1L));
			return listCursus;
		}
		else if(user_id.equals("etud2")) {			
			listCursus.add(findById(1L));
			return listCursus;
		}
		else if(user_id.equals("etud3")) {			
			listCursus.add(findById(2L));
			return listCursus;
		}
		else if(user_id.equals("etud4")) {	
			listCursus.add(findById(2L));
			listCursus.add(findById(3L));
			return listCursus;
		}
		else if(user_id.equals("secre1")) {	
			listCursus.add(findById(1L));
			return listCursus;
		}
		else if(user_id.equals("secre2")) {	
			listCursus.add(findById(2L));
			return listCursus;
		}
		else if(user_id.equals("secre3")) {	
			listCursus.add(findById(3L));
			return listCursus;
		}
		return null;
	}

	public Cursus findById(long id) {
		return allCursus.get(id);
	}

}
